The Watchdog Approach Efficiently Eliminates an Entire Class of Security Vulnerabilities by Enforcing Memory Safety in Hardware. Watchdog Maintains Per-pointer Bounds and Identifier Metadata in a Disjoint Shadow Space to Ensure Compatibility with Existing
نویسندگان
چکیده
......Low-level systems software— such as operating systems, virtual machines, language runtimes, embedded software, and performance-critical applications—is commonly written in unsafe languages, notably C and C++. These low-level languages remain prevalent because they provide high performance, direct access to the underlying hardware, and explicit control over memory management. Moreover, because such systems often consist of millions of lines of code, transitioning the computing ecosystem away from C and its variants is not feasible any time soon. Unfortunately, C and its variants do not enforce memory safety. Informally, memory safety requires that all memory accesses performed by a program adhere to the language specification (that is, all accesses refer only to allocated memory within the prescribed object bounds). Violations of memory safety arise in two ways. First, a spatial memory safety violation, or buffer overflow, occurs when a program accesses a memory location outside of the allocated region of an object or array. Second, a temporal memory safety violation (also called a dangling pointer dereference or use-after-free error) occurs when a program accesses a memory location that has already been deallocated. See Figure 1 for examples of spatial and temporal safety violations. Without memory safety, seemingly benign program bugs anywhere in the code base can cause silent memory corruption, difficultto-diagnose crashes, and incorrect results. Worse yet, lack of memory safety enforcement is the root cause of a multitude of security vulnerabilities because it allows attackers to exploit a memory safety error to corrupt program execution by giving the vulnerable program a suitably crafted input. Buffer overflows, use-after-free errors, and other lowlevel vulnerabilities stemming from the lack of memory safety compromise the security of the computing ecosystem as a whole. Over the last few years, we’ve embarked on a research project focused on bringing memory safety enforcement to C and C++. The goal is to retrofit unmodified C and C++ code with memory safety so that the code is as safe as code written in [3B2-9] mmi2013030038.3d 17/5/013 17:45 Page 38
منابع مشابه
Practical Low-overhead Enforcement of Memory Safety for C Programs
PRACTICAL LOW-OVERHEAD ENFORCEMENT OF MEMORY SAFETY FOR C PROGRAMS Santosh Ganapati Nagarakatte Milo M. K. Martin The serious bugs and security vulnerabilities that result from C’s lack of bounds checking and unsafe manual memory management are well known, yet C remains in widespread use. Unfortunately, C’s arbitrary pointer arithmetic, conflation of pointers and arrays, and programmer-visible ...
متن کاملEverything You Want to Know About Pointer-Based Checking
Lack of memory safety in C/C++ has resulted in numerous security vulnerabilities and serious bugs in large software systems. This paper highlights the challenges in enforcing memory safety for C/C++ programs and progress made as part of the SoftBoundCETS project. We have been exploring memory safety enforcement at various levels – in hardware, in the compiler, and as a hardware-compiler hybrid ...
متن کاملChaotic Memory Randomization for Securing Embedded Systems
Embedded systems permeate through nearly all aspects of modern society. From cars to refrigerators to nuclear refineries, securing these systems has never been more important. Intrusions, such as the Stuxnet malware which broke the centrifuges in Iran’s Natanz refinery, can be catastrophic to not only the infected systems, but even to the wellbeing of the surrounding population. Modern day prot...
متن کاملStack Bounds Protection with Low Fat Pointers
Object bounds overflow errors are a common source of security vulnerabilities. In principle, bounds check instrumentation eliminates the problem, but this introduces high overheads and is further hampered by limited compatibility against un-instrumented code. On 64-bit systems, low-fat pointers are a recent scheme for implementing efficient and compatible bounds checking by transparently encodi...
متن کاملTowards Linux Kernel Memory Safety
e security of billions of devices worldwide depends on the security and robustness of the mainline Linux kernel. However, the increasing number of kernel-specific vulnerabilities, especially memory safety vulnerabilities, shows that the kernel is a popular and practically exploitable target. Two major causes of memory safety vulnerabilities are reference counter overflows (temporal memory erro...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2013